package com.itheima.interceptor;

import com.itheima.domain.User;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/*
* 拦截器
* */
public class ReSourceInterceptor implements HandlerInterceptor {

    private final List<String> urls;
    public ReSourceInterceptor(List<String> urls) {
        this.urls = urls;
    }

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //如果用户已经登录，直接放行
        String requestURI = request.getRequestURI();

        //如果没有登录，我们判断是否访问的是登录相关功能，如果是，放行
        //用于检查字符串 requestURI 是否包含子字符串 "login" 并且 "login" 不是从字符串的开始处（索引0）开始的。
        if (requestURI.indexOf("login")>0){
            return true;
        }
        //如果用户已经登录直接放行
        User user = (User) request.getSession().getAttribute("USER_SESSION");
        if (user != null){
            //判断用户如果是管理员,
            if ("ADMIN".equals(user.getRole())){
                return true;

            }else {
                //判断用户是普通用户
                for (String url : urls){
                    if (requestURI.indexOf(url)>0){
                        return true;
                    }
                }
            }
            return true;
        }

        //如果不是相关功能，需要跳转登录页面
        request.setAttribute("msg","请先登录");
        request.getRequestDispatcher("/admin/login.jsp").forward(request,response);
        return false;
    }
}
